#ifndef GLOBAL_VARIABLES
#define GLOBAL_VARIABLES

#include "IspImage.h"
#include "Hw3TypesExtended.h"
#include <Windows.h>


/*oOoOoOoOoOoOoOoOoOoOoOoOooOoOoOoOoOoO*/
//		Global Variables Module
/*oOoOoOoOoOoOoOoOoOoOoOoOooOoOoOoOoOoO*/
// This module has two goals:
//		- Allow the programmer to enter the two debug modes. In debug mode, various informative messages are printed
//			to the screen and allows easier debug. DEBOG_MODE_VERBOSE allows even more detailed messages to be
//			printed than DEBUG_MODE.
//		- Define the program's global variables in each module this header file is included in. This module 
//			contains global variables that are used in different modules of the program. 
//			In this project it is very important that events, mutexes and other variables and parameters 
//			will be accessible to all running threads.


/*oOoOoOoOoOoOoOoOoOoOoOoOooOoOoOoOoOoO*/
//			Debug Modes
/*oOoOoOoOoOoOoOoOoOoOoOoOooOoOoOoOoOoO*/
#ifndef DEBUG_MODE
//#define DEBUG_MODE
#endif

#ifndef DEBUG_MODE_VERBOSE
//#define DEBUG_MODE_VERBOSE
#endif

/*oOoOoOoOoOoOoOoOoOoOoOoOooOoOoOoOoOoO*/
//		Global Variables
/*oOoOoOoOoOoOoOoOoOoOoOoOooOoOoOoOoOoO*/
//This module contains external variables that are used in different threads.
//In this project it is very important that events, mutexes and other variables
//and parameters will be accessible to all running threads


extern HANDLE *hReadEvents;
extern TImageReaderAndProperties ImageReaderAndProperties;
extern TBoxSize FaceSize;
extern IspImage Image;
extern TFace *FacebookHead;
extern int MaximumNumberOfOffPixels;
extern HANDLE hAddFaceToFacebookMutex;
extern HANDLE hNumOfRunningThreadsSemaphore;
extern HANDLE OpenThreadsCounterMutex;
extern int OpenThreadsCounter;
extern HANDLE hTerminateProgram;

#endif